axios.defaults.baseURL='http://localhost:8080'
Vue.prototype.$http = axios



function url2Obj(){
    // 取浏览器地址栏的查询参数,取到参数以后,赋值给query对象,并去后端查询
    let url = location.href; // http://127.0.0.1/list.html?typeId=27&minPrice=xx&maxPrice=xx
    let paramStr = url.split("?")[1];   // typeId=27
    let obj = {};
    if(paramStr){
        let paramArray = paramStr.split("&");   // typeId=27  minPrice=xx  maxPrice=xx
        for(let i=0;i<paramArray.length;i++){
            let key = paramArray[i].split("=")[0];  // key是动态变化的,
            let value = paramArray[i].split("=")[1];
            // obj[key] 给obj对象动态属性赋值
            obj[key] = value;
        }
    }
    return obj;
}



// 每个页面都要做登录拦截判断,
// token没值说明没登录,跳转到登录页面

// 定义放行的页面,不需要登录就可以访问的页面
let htmls = ["index.html","wymc.html","callback.html"];

// 获取到当前要访问的页面路径
let url = location.href;
let isRun = false;
if(url.endsWith("/")){
    isRun = true;
}else{
    for(let i=0;i<htmls.length;i++){
        let html = htmls[i];
        if(url.indexOf(html) > -1){
            isRun = true;
            break;
        }
    }
}

// 判断当前有没有登陆过
if(!isRun){
    let token = localStorage.getItem("token");
    if(!token){
        alert("当前页面需要登录后才能操作,请登录后再次操作!");
        // 跳转到首页
        location.href = "/index.html";
    }
}

// axios请求拦截器:添加请求拦截器，在请求头中加token
axios.interceptors.request.use(
    config => {
        // 从localStorage中获取token
        let token = localStorage.getItem("token");

        // 如果token有值,我们就放到请求头里面
        if (token) {
            config.headers.token = token;
        }
        return config
    },
    error => {
        return Promise.reject(error)
    })


// 响应拦截器
axios.interceptors.response.use(function(response){

    let result = response.data;
    if(!result.success && result.msg == "noLogin"){
        alert("当前未登录,请登录后继续操作!");
        location.href = "/index.html";
        localStorage.removeItem("token");
        localStorage.removeItem("user");
        return "";
    }
    return response
},function(err){
    return Promise.reject(err)
})